package com.admin.utils.base.page;

import com.github.pagehelper.PageHelper;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

/**
 * 获取分页数据的工场
 */


public class pageFactory {
	/**
	 * 默认升序
	 */
	private static final String order="asc";



	private  static ServletRequestAttributes getRequestAttributes()
	{
		RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
		return (ServletRequestAttributes) attributes;
	}

	/**
	 * 获取请求参数
	 * @return
	 */
	private static HttpServletRequest getRequest()
	{
		return getRequestAttributes().getRequest();
	}

	/**
	 * 封装分页实体
	 * @return
	 */
	private static pageDomain setPage() {
	     String pageNum=	getRequest().getParameter("pageNum");
		 String pageSize=	getRequest().getParameter("pageSize");
	     String  sortName=  getRequest().getParameter("sortName");
	     String sortBy =    getRequest().getParameter("sortBy");
	     return new pageDomain(pageNum, pageSize, sortName, sortBy==null || sortBy.trim().length() ==0 ?order:sortBy );
	}


	/**
	 * 分页
	 */
	public static void startPage() {
		//从前台获取分页
		pageDomain  page=pageFactory.setPage();
		startPage(page.getPageNum(),page.getPageSize(),page.getSortName(),page.getSortOrder());
	}

	/**
	 * 分页
	 * @param page
	 */
	public static void startPage(pageDomain  page){
		startPage(page.getPageNum(),page.getPageSize(),page.getSortName(),page.getSortOrder());
	}


	/**
	 * 分页
	 * @param pageNum
	 * @param pageSize
	 * @param sortName
	 * @param sortOrder
	 */
	public static void startPage(String pageNum,String pageSize,String sortName ,String sortOrder){
		if(pageNum == null ||pageSize ==null || pageNum.isEmpty() || pageSize.isEmpty()) {
			return  ;
		}
		try {
			Integer  pageNumI = Integer.valueOf(pageNum);
			Integer  pageSizeI = Integer.valueOf(pageSize);

			if(sortName != null && sortOrder != null && !sortName.isEmpty()&& !sortOrder.isEmpty()) {
				PageHelper.startPage(pageNumI,pageSizeI, sortName +"   "+sortOrder );
			}else {
				PageHelper.startPage(pageNumI,pageSizeI);
			}
		}catch (Exception e){
			return;
		}

	}
}
